// TODO: 25/5/29
// 变量的内存
package main

import "fmt"

func main() {
	//num 实际上是一片内存空间
	//我们想要看一个变量内存地址，只需要在变量名前加上 & 即可（取地址符）
	var num int
	num = 1000
	//思考：这个num在计算机中是什么样子，
	/*fmt.Println(num)
	num = 2000
	fmt.Println(num)*/

	//打印内存地址的方式之一， Printf格式化输出
	//内存
	//第一个参数 输出字符串
	//% 占位符
	//占位符的数量，要和后面的待输出的数量保持一致
	// %d 数字 int d
	// %p 内存地址
	// \n 换行
	// %s 字符串
	// fmt.Printf("num的值：%d",num)
	fmt.Printf("num的值：%d,内存地址：%p\n", num, &num)
	num = 2000
	fmt.Printf("num的值：%d,内存地址：%p\n", num, &num)

	fmt.Println()

	var name string
	name = "zhangsan"
	fmt.Printf("num的值：%s,内存地址：%p\n", name, &name)
	name = "lisi"
	fmt.Printf("num的值：%s,内存地址：%p\n", name, &name)
}

/*
变量是指向了一片的内存空间的名字，假设一个0X9213，计算机的内存单元，
先向栈空间中申请一片内存空间，然后通过内存空间（即是内存单元的）获取其对应的地址，
但是这个地址不是我们所学的Java的地址
只不过这里的地址就是
*/
